/**
 * @author Temdog007 / http://github.com/Temdog007
 */

import * as THREE from '../../js/threejs/build/three.module.js'

import {UIRow, UIText, UIInteger, UIButton} from '../../js/threejs/libs/ui.js'

import {SetGeometryCommand} from '../../js/threejs/commands/SetGeometryCommand.js'

var SidebarGeometryShapeGeometry = function (editor, object) {
  var strings = editor.strings

  var container = new UIRow()

  var geometry = object.geometry
  var parameters = geometry.parameters

  // curveSegments

  var curveSegmentsRow = new UIRow()
  var curveSegments = new UIInteger(parameters.curveSegments || 12).onChange(changeShape).setRange(1, Infinity)

  curveSegmentsRow.add(new UIText(strings.getKey('sidebar/geometry/shape_geometry/curveSegments')).setWidth('90px'))
  curveSegmentsRow.add(curveSegments)

  container.add(curveSegmentsRow)

  // to extrude
  var button = new UIButton(strings.getKey('sidebar/geometry/shape_geometry/extrude')).onClick(toExtrude).setWidth('90px').setMarginLeft('90px')
  container.add(button)

  //

  function changeShape() {
    editor.execute(new SetGeometryCommand(editor, object, new THREE.ShapeBufferGeometry(parameters.shapes, curveSegments.getValue())))
  }

  function toExtrude() {
    editor.execute(
      new SetGeometryCommand(
        editor,
        object,
        new THREE.ExtrudeBufferGeometry(parameters.shapes, {
          curveSegments: curveSegments.getValue(),
        })
      )
    )
  }

  return container
}

export {SidebarGeometryShapeGeometry}
